chore(deps): update dependency commander to v14 #8202
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^6.1.0->^14.0.0Release Notes
tj/commander.js (commander)
v14.0.2Compare Source
Changed
v14.0.1Compare Source
Fixed
Changed
Object.assign()([#2395])string.endsWith()instead ofstring.slice()([#2396]).parseOptions()to process args array in-place ([#2409])._concatValue()to._collectValue()(change code fromarray.concat()toarray.push()) ([#2410])v14.0.0Compare Source
Added
.helpGroup()onOptionandCommand, and higher-level.optionsGroup()and.commandsGroup()which can be used in chaining way to specify group title for following options/commands ([#2328])parseArgproperty toArgumentclass ([#2359])Fixed
.configureOutput()now makes copy of settings instead of modifying in-place, fixing side-effects ([#2350])Changed
Helpclass adding.formatItemList()and.groupItems()methods ([#2328])v13.1.0Compare Source
Added
.option('--ws, --workspace')([#2312])v13.0.0Compare Source
Added
.parse()with default settings ([#2299]).saveStateBeforeParse()and.restoreStateBeforeParse()for use by subclasses ([#2299])styleTitle()to add color to help using.configureHelp()or Help subclass ([#2251]).configureOutput()forgetOutHasColors(),getErrHasColors(), andstripColor()([#2251])minWidthToWrap([#2251])displayWidth(),boxWrap(),preformatted()et al ([#2251])Changed
-([#2270]).parse()ifstoreOptionsAsProperties: true([#2299])thisin parameters for action handler callback ([#2197])Deleted
Help.wrap()refactored intoformatItem()andboxWrap()([#2251])Migration Tips
Excess command-arguments
It is now an error for the user to specify more command-arguments than are expected. (
allowExcessArgumentsis now false by default.)Old code:
Now shows an error:
You can declare the expected arguments. The help will then be more accurate too. Note that declaring
new arguments will change what is passed to the action handler.
Or you could suppress the error, useful for minimising changes in legacy code.
Stricter option flag parsing
Commander now throws an error for option flag combinations that are not supported.
In particular, a short flag with multiple characters is now an error.
A short option has a single character:
Or from Commander 13.1 you can have an extra long flag instead of a short flag to allow a more memorable shortcut for the full name:
v12.1.0Compare Source
Added
node --evalandnode --printwhen call.parse()with no arguments ([#2164])Changed
node:([#2170])Removed
v12.0.0Compare Source
Added
.addHelpOption()as another way of configuring built-in help option ([#2006]).helpCommand()for configuring built-in help command ([#2087])Fixed
passThroughOptionsconstraints when using.addCommandand throw if parent command does not have.enablePositionalOptions()enabled ([#1937])Changed
.storeOptionsAsProperties()after setting an option value ([#1928])@api privatewith documented@private([#1949]).addHelpCommand()now takes a Command (passing string or boolean still works as before but deprecated) ([#2087])Deprecated
.addHelpCommand()passing string or boolean (use.helpCommand()or pass a Command) ([#2087])Removed
programexport instead) ([#2017])Migration Tips
global program
If you are using the deprecated default import of the global Command object, you need to switch to using a named import (or create a new
Command).option and command clashes
A couple of configuration problems now throw an error, which will pick up issues in existing programs:
v11.1.0Compare Source
Fixed
OptionValueSourceto allow any string, to match supported use of custom sources ([#1983])Command.version()can also be used as getter ([#1982])Commands.executableDir(), for when not configured ([#1965])Added
registeredArgumentsproperty onCommandwith the array of definedArgument(likeCommand.optionsforOption) ([#2010])envVar,presetArg([#2019])argChoices,defaultValue,defaultValueDescription([#2019])Changed
Deprecated
Command._argswas private anyway, but now available asregisteredArguments([#2010])v11.0.0Compare Source
Fixed
Changed
v10.0.1Compare Source
Added
Fixed
Option.optionFlagsproperty from TypeScript definition ([#1844])Changed
.implies()([#1854])v10.0.0Compare Source
Added
Changed
v9.5.0Compare Source
Added
.getOptionValueSourceWithGlobals()([#1832])showGlobalOptionsfor.configureHelp{}andHelp([#1828])v9.4.1Compare Source
Fixed
.setOptionValue()now also clears option source ([#1795])impliedtoOptionValueSourcefor option values set by using.implies()([#1794])undefinedto return type of.getOptionValueSource()([#1794])Changed
v9.4.0Compare Source
Added
preSubcommandhook called before direct subcommands ([#1763])Fixed
InvalidOptionArgumentErrorin esm ([#1756])Changed
v9.3.0Compare Source
Added
.summary()for a short summary to use instead of description when listing subcommands in help ([#1726])Option.implies()to set other option values when the option is specified ([#1724])Fixed
string[]to.options()default value parameter type for use with variadic options ([#1721])Deprecated
-ws) ([#1718])v9.2.0Compare Source
Added
Fixed
Changed
String.prototype.substr([#1706])v9.1.0Compare Source
Added
.conflicts()to set conflicting options which can not be specified together ([#1678])v9.0.0Compare Source
Added
.executableDir()for custom search for subcommands ([#1571])Optionto.option()or.requiredOption()([#1655])error()for generating errors from client code just like Commander generated errors, with support for.configureOutput(),.exitOverride(), and.showHelpAfterError()([#1675]).optsWithGlobals()to return merged local and global options ([#1671])Changed
showSuggestionAfterErroris now on by default ([#1657])executableFile([#1571])executableFile([#1571]).choices()([#1667]).parse(),.parseAsync(),.aliases()([#1669])Fixed
Removed
require.main.filenamewhen script not known from arguments passed to.parse()(can supply details using.name(), and.executableDir()orexecutableFile) ([#1571])v8.3.0Compare Source
Added
.getOptionValueSource()and.setOptionValueWithSource(), where expected values for source are one of 'default', 'env', 'config', 'cli' ([#1613])Deprecated
.command('*'), use default command instead ([#1612])on('command:*'), use.showSuggestionAfterError()instead ([#1612])v8.2.0Compare Source
Added
.showSuggestionAfterError()to show suggestions after unknown command or unknown option ([#1590])Optionsupport for values from environment variables using.env()([#1587])Changed
Removed
OptionmethodargumentRejectedv8.1.0Compare Source
Added
.copyInheritedSettings()([#1557])Argumentmethods for.argRequired()and.argOptional()([#1567])v8.0.0Compare Source
Added
.argument(name, description)for adding command-arguments ([#1490]).createArgument()factory method ([#1497]).addArgument()([#1490])Argumentsupports.choices()([#1525]).showHelpAfterError()to display full help or a custom message after an error ([#1534]).hook()with support for'preAction'and'postAction'callbacks ([#1514]).opts()return type using TypeScript generics ([#1539]).getOptionValue()and.setOptionValue()([#1521])Changed
.parseAsync()is now declared asasync([#1513])Helpmethod.visibleArguments()returns array ofArgument([#1490])CommanderErrorcodecommander.invalidOptionArgumentrenamedcommander.invalidArgument([#1508]).addTextHelp()callback no longer allows result ofundefined, now juststring([#1516])index.tabinto a file per class ([#1522]).showHelpAfterError()) ([#1534])Commandproperty.arginitialised to empty array (was previously undefined) ([#1529])Deprecated
cmd.description(desc, argDescriptions)for adding argument descriptions ([#1490]).argument(name, description)instead)InvalidOptionArgumentError(replaced byInvalidArgumentError) ([#1508])Removed
Commandobject ([#1520])programexport)Migration Tips
If you have a simple program without an action handler, you will now get an error if
there are missing command-arguments.
$ node trivial.js error: missing required argument 'file'If you want to show the help in this situation, you could check the arguments before parsing:
Or, you might choose to show the help after any user error:
v7.2.0Compare Source
Added
parentproperty onCommand([#1475]).attributeName()onOption([#1483])Changed
v7.1.0Compare Source
Added
.cjsto list of expected script file extensions ([#1449])Fixed
process.mainModule([#1448])command('*')and call when command line includes options ([#1464])on('command:*', ...)and call when command line includes unknown options ([#1464])Changed
v7.0.0Compare Source
Added
.enablePositionalOptions()to let program and subcommand reuse same option ([#1427]).passThroughOptions()to pass options through to other programs without needing--([#1427]).allowExcessArguments(false)to show an error message if there are too many command-arguments on command line for the action handler ([#1409]).configureOutput()to modify use of stdout and stderr or customise display of errors ([#1387]).addHelpText()to add text before or after the built-in help, for just current command or also for all subcommands ([#1296]).createOption()to support subclassing of automatically created options (like.createCommand()) ([#1380])Changed
program.opts().storeOptionsAsProperties().help()and.outputHelp()(removed from README) ([#1296])process.stderr.write()instead ofconsole.error().on('--help')(removed from README) ([#1296])Fixed
Deleted
.passCommandToAction()([#1409]).allowExcessArguments(false)Migration Tips
The biggest change is the parsed option values. Previously the options were stored by default as properties on the command object, and now the options are stored separately.
If you wish to restore the old behaviour and get running quickly you can call
.storeOptionsAsProperties().To allow you to move to the new code patterns incrementally, the action handler will be passed the command twice,
to match the new "options" and "command" parameters (see below).
program options
Use the
.opts()method to access the options. This is available on any command but is used most with the program.action handler
The action handler gets passed a parameter for each command-argument you declared. Previously by default the next parameter was the command object with the options as properties. Now the next two parameters are instead the options and the command. If you
only accessed the options there may be no code changes required.
If you already set
.storeOptionsAsProperties(false)you may still need to adjust your code.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.